package data;

import java.util.ArrayList;

public class DataRecord {
	private ArrayList<DataEntry> data;
	
	public DataRecord() {
		data = new ArrayList<DataEntry>();
	}
	
	public DataRecord( ArrayList<DataEntry> input ) {
		this.data = input;
	}
	
	/**
	 * Liefert einen Eintrag anhand der Bezeichnung der Variable.
	 * @param key Bezeichnung der Variable
	 * @return Wert der Variable
	 */
	public Object getValueByName( String key ) {
		Object value = null;
		for( DataEntry entry : this.data ) {
			if( entry.getName().equals( key )) {
				value = entry.getValue();
			}
		}
		return value;
	}
	
	/**
	 * Liefert eine Liste von Variablennamen.
	 * @return
	 */
	public ArrayList<String> getNames() {
		ArrayList<String> output = new ArrayList<String>();
		for ( DataEntry entry : data ) {
			output.add( entry.getName() );			
		}
		return output;
	}
	
	/**
	 * Liefert die Anzahl der Einträge.
	 * @return
	 */
	public int getSize() {
		return data.size();
	}

	/**
	 * Fügt einen Eintrag hinzu
	 * @param entry
	 */
	public void add( DataEntry entry ) {
		this.data.add( entry );
	}
	
	public void add( DataRecord record ) {
		ArrayList<DataEntry> entrys = record.getEntrys();
		for( DataEntry entry : entrys ) {
			this.data.add( entry );
		}
	}
	
	/**
	 * Entfernt einen Eintrag
	 * @param name
	 */
	public void removeEntryByName( String name ) {
		for( DataEntry entry : data ) {
			if ( entry.getName().equals( name ) ) {
					data.remove( entry );
			}
		}		
	}
	@SuppressWarnings("unchecked")
	public ArrayList<DataEntry> getEntrys() {
		return data;
	}
}

